package scala.day02

object Demo04Fun04 {
  def main(args: Array[String]): Unit = {
        /**
          * 以函数作为参数的应用
          */
        val array: Array[Int] = Array(1,2,3,4,5,6,7,8,9)
        //将数组中的元素都乘以2
        //使用Java的方法来写
         var i: Int = 0
        while(i < array.length){
          array(i) = array(i)*2
          i += 1
        }
        //mkString 将数组或者集合按照一个分隔符拼接成一个字符串
        println(array.mkString(","))
        println("*" * 100)
        //是使用scala高阶函数实现
        val array1: Array[Int] = Array(1,2,3,4,5,6,7,8,9)

        /**
          * map 函数：一个一个处理数组中的元素
          * 循环数组中的元素，一个一个传给后面的函数，最终返回一个新的数组
          */
        val array3: Array[Int] = array1.map((i:Int) => i*2)
        println(array3.mkString(","))
        //将数组中的元素转化成为double类型
        val strs = Array("1.1","1.2","1.3")
        val doubles: Array[Double] = strs.map((_.toDouble))
        println(doubles.mkString(","))
    /**
      * 对数组中的元素奇数乘以2，偶数加一
      */
        val array4 = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
        val array5 = array4.map((i: Int) => {
          if (i % 2 == 1) {
          i * 2
      } else {
          i + 1
         }
    })
      println(array5.mkString(","))

    /**
      * 练习
      * 1.对数组的元素乘以2 加上100  乘以5
      */
    val ints: Array[Int] = Array(1,2,3,4,5,6,7,8,9)
    val ints1: Array[Int] = ints.map((i:Int)=>(i*2+100)*5)
    println(ints1.mkString(","))
  }
}
